package com.it.test;

import com.it.mapper.UserMapper;
import com.it.pojo.User;
import com.it.util.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.jupiter.api.Test;

import java.io.IOException;
import java.sql.Date;
import java.util.HashMap;
import java.util.Map;

/*
 * TODO MyBatis (2)、语句传参
 * 【说明】：通过快速入口，了解了MyBatis的基本使用、可以简单的进行SQL查询
 *         当然、在日常开发中、更多的查询是具备条件的查询、例如、根据id查询、根据姓名、性别、年龄等
 *         那么在 映射配置文件中如何进行参数的传递呢？
 * 【参数传递】：
 *
 *
 *
 * */
public class ssm_mybatis_02 {
    SqlSession sqlSession = MyBatisUtil.SQLSession(true);
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

    // 测试：根据id进行查询
    @Test
    public void test01() throws IOException {
        User user = userMapper.findById(3);
        System.out.println(user);
        sqlSession.close();
    }

    // 测试：新增一条数据、传入一个实体类
    @Test
    public void test02() {
        User user = new User();
        user.setId(null);
        user.setName("嬴政");
        user.setPhone("18800000000");
        user.setEmail("yingzheng@qq.com");
        user.setProfession("书同文、车同轨、大一统");
        user.setAge(40);
        user.setGender(1);
        user.setStatus(2);
        user.setCreatetime("1999-10-20 00:00:00");
        Integer integer = userMapper.addByUser(user);
        System.out.println(integer);
        sqlSession.close();
    }

    // 测试：更新一条数据、传入多个参数
    @Test
    public void test03() {
        int i = userMapper.updateByOdd("18800000001", "yingzheng@163.com", 25);
        System.out.println(i);
        sqlSession.close();
    }

    // 测试：新增、传入一个Map集合数据
    @Test
    public void test04() {
        Map<String, Object> map = new HashMap<>();
        map.put("id", null);
        map.put("name", "刘邦");
        map.put("phone", "18800000002");
        map.put("email", "liubang@163.com");
        map.put("profession", "建立大汉");
        map.put("age", 47);
        map.put("gender", 1);
        map.put("status", 2);
        map.put("createtime", "1999-10-20 00:00:00");

        int i = userMapper.updateByMap(map);
        System.out.println(i);
        sqlSession.close();
    }

}
